package Lee_code;

/**
 * @author blh
 * @date 2024年08月19日 18:53
 */
public class Lee_540_819 {
    public int singleNonDuplicate(int[] nums) {
        int len = nums.length;
        // 根据下标进行二分查找
        int mid, left = 0, right = len - 1;
        while (left < right) {
            mid = left + (right - left) / 2;
            if (mid % 2 == 1) {
                // mid是奇数
                if (nums[mid] == nums[mid - 1]) {
                    // 在右边
                    left = mid + 1;
                } else if (nums[mid] == nums[mid + 1]) {
                    // 在左边
                    right = mid - 1;
                } else {
                    return mid;
                }
            } else {
                // mid是偶数
                if (nums[mid] == nums[mid + 1]) {
                    // 在右边
                    left = mid + 1;
                } else if (nums[mid] == nums[mid - 1]) {
                    // 在左边
                    right = mid - 1;
                } else {
                    return mid;
                }
            }
        }
        return 0;
    }
}
